<?php
/**
 * Created by PhpStorm.
 * User: zjy
 * Date: 2015/4/9
 * Time: 16:45
 */
class IphonepayApp extends FrontendApp {

    /***
     * 支付宝回调地址
     * 服务端异步回调接口
     */
    public function alipay_notify(){
        $alipay_config = array();
        $date = date('Y-m-d H:i:s', time());
        $filename = ROOT_PATH.'/includes/payments/api_alipay/log.txt';

        require_once(ROOT_PATH . "/includes/payments/api_alipay/alipay.config.php");
        require_once(ROOT_PATH . "/includes/payments/api_alipay/lib/alipay_notify.class.php");


        //计算得出通知验证结果
        $alipayNotify = new AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyNotify();
        $content = $date.' '.var_dump($verify_result);
        @file_put_contents($filename, $content."\r\n", FILE_APPEND);
        if($verify_result) {//验证成功
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //请在这里加上商户的业务逻辑程序代
            //——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
            //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表

            //商户订单号
            $out_trade_no = $this->get_gp('out_trade_no', 'P');

            //支付宝交易号

            $trade_no = $this->get_gp('trade_no', 'P');

            //交易状态
            $trade_status = $this->get_gp('trade_status', 'P');

            if($trade_status == 'TRADE_FINISHED' || $trade_status == 'TRADE_SUCCESS') {
                $model_order = m('order');
                $sql = "SELECT * FROM ".DB_PREFIX."order WHERE order_sn='{$out_trade_no}'";

                $order_info = $model_order->getRow($sql);
                if (!$order_info) {
                    /* 没有该订单 */
                    echo "fail";
                    exit;
                }
                if ($order_info['status'] == ORDER_PENDING) {
                    $info = array(
                        'status'        =>  ORDER_ACCEPTED,
                        'out_trade_sn'  =>  $trade_no,
                        'pay_time'      =>  time(),
                        'payment_id'    => 0,
                        'payment_name'  => '支付宝',
                        'payment_code'  => 'alipay',
                    );

                    $flag = $model_order->edit($order_info['order_id'], $info);
                    if ($flag === false) {
                        echo "fail";
                        exit;
                    }
                }

            }

            //——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

            echo "success";		//请不要修改或删除

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
        else {
            //验证失败
            echo "fail";

            //调试用，写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
        }

    }
}